<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>14.展开语法(点语法)正确使用方式</title>
</head>

<body>
  <script>
    // 展示语法或称点语法体现的就是收/放特性，做为值时是放(在右边)，做为接收变量时是收（在左边）。
    let hd = [1, 2, 3];
    let [a, b, c] = [...hd]; // 放 ，
    console.log(a); //1
    console.log(b); //2
    console.log(c); //3
    [a, ...hd] = [1, 2, 3];
    console.log(a, hd); //a,[2, 3] //收  a，和hd会作为两个变量来接收数据

    //使用 ... 可以接受传入的多个参数合并为数组，下面是使用点语法进行求合计算。
    function sum (...params) {
      console.log(params);
      return params.reduce((pre, cur) => pre + cur);
    }
    console.log(sum(1, 3, 2, 4));

    //多个参数时...参数必须放后面，下面计算购物车商品折扣
    function sum (discount = 0, ...prices) {
      let total = prices.reduce((pre, cur) => pre + cur);
      return Math.round(total * (1 - discount));
    }
    console.log(sum(0.1, 100, 300, 299));
    // 标签字符串
    function hd2(str, ...values) {
      console.log(str); //["站点", "-", "", raw: Array(3)]
      console.log(values); //["后盾人", "houdunren.com"]
    }
    let name = '后盾人', url = 'houdunren.com';
    hd2`站点${name}-${url}`
  </script>
</body>

</html>